package org.dromara.customer.domain.bo;

import org.dromara.customer.domain.TaOrders;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;

import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;

/**
 * 订单业务对象 ta_orders
 *
 * @author xiyin321
 * @date 2024-07-09
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = TaOrders.class, reverseConvertGenerate = false)
public class TaOrdersBo extends BaseEntity {

    /**
     * 主键
     */
    @NotNull(message = "主键不能为空", groups = {EditGroup.class})
    private Long ordersId;

    /**
     * 订单状态 1待付款 2待接单 3已接单 4派送中 5已完成 6已取消 7退款
     */
    private String status;

    /**
     * 用户id
     */
    private Long userId;

    /**
     * 地址id
     */
    @NotNull(message = "地址不能为空", groups = {AddGroup.class, EditGroup.class})
    private Long addressId;

    /**
     * 下单时间
     */
    private Date orderTime;

    /**
     * 结账时间
     */
    private Date checkoutTime;

    /**
     * 支付方式 1微信,2支付宝
     */
    private Long payMethod;

    /**
     * 支付状态 0未支付 1已支付 2退款
     */
    private Long payStatus;

    /**
     * 实收金额
     */
    private String orderAmount;

    /**
     * 备注
     */
    private String remark;

    /**
     * 订单取消原因
     */
    private String cancelReason;

    /**
     * 订单拒绝原因
     */
    private String rejectionReason;

    /**
     * 订单取消时间
     */
    private Date cancelTime;

    /**
     * 预计送达时间
     */
    private Date estimatedDeliveryTime;

    /**
     * 配送状态  1立即送出  0选择具体时间
     */
    private Integer deliveryStatus;

    /**
     * 送达时间
     */
    private Date deliveryTime;

    /**
     * 打包费
     */
    private Long packAmount;

    /**
     * 餐具数量
     */
    private Long tablewareNumber;

    /**
     * 餐具数量状态  1按餐量提供  0选择具体数量
     */
    private Integer tablewareStatus;

    /**
     * 店铺分组商品列表
     */
    private List<TaStoreOrdersDetailBo> goodsList;
}
